A constraint satisfaction solver uses heuristics and metaheuristics to identify a sufficiently good solution to an optimization problem.